﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using fadmin.Cliente;

namespace fadmin
{
    public partial class frmCliente : Form
    {
        public frmCliente()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.AutoGenerateColumns = false;
            //pesquisarCliente();  
        }

        private void btnPesquisar_Click(object sender, EventArgs e)
        {
            pesquisarCliente();         
        }

        private void pesquisarCliente()
        {
            try
            {
                ClienteDTO cliente = new ClienteDTO();
                if (!(txtNomeFiltro.Text.Trim().Equals("")))
                {
                    cliente.nome = txtNomeFiltro.Text;
                }
                if (!(txtCodigoFiltro.Text.Trim().Equals("")))
                {
                    cliente.codigo_cliente = Convert.ToInt32(txtCodigoFiltro.Text);
                }

                ClienteManager manager = new ClienteManager();

                List<ClienteDTO> dados = new List<ClienteDTO>();

                dados = manager.consultar(cliente);
                dataGridView1.DataSource = dados;
                
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
            }

        }



        private void frmCliente_KeyDown(object sender, KeyEventArgs e)
        {
            
            if (e.KeyCode.ToString() == "F2")
            {
                frmNovoCliente frm = new frmNovoCliente();
                frm.ShowDialog();

            }
            else if (e.KeyCode.ToString() == "Return")
            {
                pesquisarCliente();
            }
            else if (e.KeyCode.ToString() == "Escape")
            {
                this.Close();
            }
        }

        private void novoClienteF2ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmNovoCliente frm = new frmNovoCliente();
            frm.ShowDialog();

        }

        private void sairEscToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                string codigo_cliente = (string)dataGridView1.Rows[e.RowIndex].Cells["codigo_cliente"].Value.ToString();


                if (!(codigo_cliente.Trim().Equals("")))
                {
                    frmNovoCliente formCadastro = new frmNovoCliente(codigo_cliente);
                    formCadastro.ShowDialog();

                }
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
            }

        }

        private void frmCliente_Activated(object sender, EventArgs e)
        {
            pesquisarCliente();
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {

                excluirRegistro();
            
        }

        private void excluirRegistro()
        {
            List<int> listaCodigo = new List<int>();
            //Pega todos os clientes que serão excluidos
            foreach (DataGridViewRow Row in this.dataGridView1.Rows)
            {
                //onde o Valor 0 é o index da sua coluna onde estao os checkboxes, ou pode passar entre as aspas o nome da coluna
                if (Convert.ToBoolean(Row.Cells[0].Value) == true)
                {
                    listaCodigo.Add(Convert.ToInt32(Row.Cells["codigo_cliente"].Value));
                }
            }

            if (MessageBox.Show("deseja apagar os clientes selecionados dos seus dados?", "atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {

                //anda na lista excluindo os selecionados.
                foreach (int cod in listaCodigo)
                {

                    if (cod.Equals("1"))
                    {
                        MessageBox.Show("Não é permitido excluir a opção de venda direta!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                    else
                    {
                        try
                        {
                            ClienteManager manager = new ClienteManager();
                            manager.excluir(Convert.ToInt32(cod));
                            MessageBox.Show("Dados Excluídos com sucesso...", "Dados Excluídos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Erro ao tentar excluir os dados selecionados, contacte o desenvolvedor: " + ex.Message.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }

                }
            }
        }

        

    }
}
